package cn.jia.spring4;

import cn.jia.spring2.config.CDConfig;
import cn.jia.spring2.pojo.InterfaceImpl.BlankDisc;
import cn.jia.spring2.pojo.InterfaceImpl.SgtPeppers;
import cn.jia.spring2.pojo.myInterface.CompactDisc;
import cn.jia.spring4.annotation.BlankAnnotation;
import cn.jia.spring4.target.Performance;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;

/**
 * Created by jia on 2018/3/27.
 */
@RunWith(SpringJUnit4ClassRunner.class)
/*  @ContextConfiguration会告诉它需要
    在CDPlayerConfig中加载配置。因为CDPlayerConfig类中包含了
    @ComponentScan，因此最终的应用上下文中应该包含CompactDiscbean*/
//@ContextConfiguration(classes = CDConfig.class)
//@ContextConfiguration({"classpath*:spring-context4.xml"})
@ContextConfiguration(classes = {cn.jia.spring4.config.ConcertConfig.class})
public class Test2 {
    //在xml中创建的bean不是代理对象
    @Resource
    @BlankAnnotation
    private CompactDisc compactDisc;


    /**
     * 使用<bean></bean>创建的对象是实例对象，不是代理对象
     */
    @Test
    public void test2() {
        //compactDisc是个代理对象，不能强制类型转换为具体类
        if (compactDisc instanceof BlankDisc) {
            ((BlankDisc) compactDisc).playTrack(0,0);
            System.out.println();
        }
    }

    /**
     * 使用@Bean注解创建的对象不是代理对象
     */
    @Test
    public void test3() {
        //compactDisc是个代理对象，不能强制类型转换为具体类
        if (compactDisc instanceof BlankDisc) {
            System.out.println();
        }
    }
    /**
     * 使用@Component注解创建的对象不是是代理对象
     */
    @Test
    public void test4() {
        //compactDisc是个代理对象，不能强制类型转换为具体类
        if (compactDisc instanceof BlankDisc) {
            System.out.println();
        }
    }
}
